<?php
/**
 * 收料通知单
 * Created by PhpStorm.
 * User: echa
 * Date: 2018/1/25
 * Time: 17:18
 */

namespace App\Services\Warehouse;


class ReceivingNotificationService extends PublicService {
    //收料通知单ID
    //protected  $Formid='PUR_ReceiveBill';
    public function __construct()
    {
        parent::__construct(Config('k3cloud.ReceivingNotification'));
    }


    /**
       查看
     */

    public  function ViewReceivingNotification($Number='',$Id=''){
        return $this->view($Number,$Id);
    }

    /**
    提交
     *1.formid：业务对象表单Id（必录）
    2.data：Json格式数据（详情参考Json格式数据）（必录）
    2.1.CreateOrgId：创建者组织，字符串类型（非必录）
    2.2.Numbers：单据编号集合，格式["billNo1","billNo1",...]，数组类型（必录）
     */
    public function  SubmitReceivingNotification($Numbers=[]){
        return $this->submit($Numbers);
    }

    /**
    审核
     *
     * 1.formid：业务对象表单Id（必录）
    2.data：Json格式数据（详情参考Json格式数据）（必录）
    2.1.CreateOrgId：创建者组织，字符串类型（非必录）
    2.2.Numbers：单据编号集合，格式["billNo1","billNo1",...]，数组类型（必录）

     */
    public function AuditReceivingNotification($Numbers=[]){
        return $this->audit($Numbers);
    }

    /**
     *单据列表查询
     * 1.data：Json格式数据（详情参考Json格式数据）（必录）
    1.1.FormId：业务对象表单Id（必录）   FMATERIALID,FMaterialName
    1.2.FieldKeys：字段keys，字符串类型用逗号分隔，比如"key1,key2..."（必录）
    1.3.FilterString：过滤（非必录）  FBillNo='CGTL000004'
    1.4.OrderString：排序字段（非必录）
    1.5.TopRowCount：总行数（非必录）
    1.6.StartRow：开始行（非必录）
    1.7.Limit：最大行数，不能超过2000（非必录）
     */
    public function ExecuteBillQueryReceivingNotification($FieldKeys='',$FilterString='',$OrderString='',$TopRowCount=0,$StartRow=0,$Limit=20)
    {
            if (empty($FieldKeys)) {
                $FieldKeys='FBillNo,FDate,FDocumentStatus,FCreatorId,FCreateDate,FSupplierId,F_PAEZ_Text';
            }
          return $this->ExecuteBillQuery($FieldKeys,$FilterString,$OrderString,$TopRowCount,$StartRow,$Limit);
    }


    /**
        收料通知列表
     * 参数说明
     * $FReceiverId  收料员编号（员工编号）
     * $StartRow 开始行
     * $OrderString 排序字段
     * $Limit 最大行数，不能超过2000
     * 字段说明
     * FId  收料单ID
     * FBillNo 收料单号
     * FDocumentStatus  单据状态
     * FCreatorId.FName 创建人
     * FCreateDate  创建时间
     * FSupplierId.FName 供应商名称
     * F_PAEZ_Text 采购单号
     * FReceiverId 收料员ID
     * FReceiverId.FName  收料员编号（员工编号）
     * F_PAEZ_Qty2 商品样数
     * F_PAEZ_Qty1 交货数量合计
     */
    public function ListReceivingNotification($FReceiverFNumber='',$StartRow=0,$OrderString,$Limit=20){
        $FieldKeys='FId,FBillNo,FDocumentStatus,FCreatorId.FName,FCreateDate,FSupplierId.FName,F_PAEZ_Text,FReceiverId,FReceiverId.FName,F_PAEZ_Qty2,F_PAEZ_Qty1';
        $FilterString="FCloseStatus='A'";
        if(!empty($FReceiverFNumber)){
            $FilterString.=" and FReceiverId.FNumber='".$FReceiverFNumber."'";
        }
        if(empty($OrderString)){
            $OrderString="FDocumentStatus asc,FCreateDate desc";
        }
        $list=$this->ExecuteBillQuery($FieldKeys,$FilterString,$OrderString,0,$StartRow,$Limit);
        if($list){
            return $list;
        }else{
            return false;
        }

    }

    /**
     * 收料单详情
     * 参数说明
     * $FBillNo  收料单号
     * 字段说明
     * FId  收料单ID
     * FBillNo 收料单号
     * FDocumentStatus  单据状态
     * FSupplierId.FName   供应商名称
     * FMaterialId  物料编号
     * FMaterialName  物料名称
     * FActReceiveQty 交货数量
     * FUnitId.FName  交货数量单位
     * FExtAuxUnitQty 实收数量
     * FStockID.FName  仓库名称
     * FStockLocId 仓位ID
     * FInStockQty  入库数量
     * FInStockBaseQty 入库数量基础单位
     * */
    public function  DetailsReceivingNotification($FBillNo=''){
        if(empty($FBillNo)){
            return false;
        }
        $FieldKeys='FId,FBillNo,FDocumentStatus,FSupplierId.FName,FMaterialId,FMaterialName,FActReceiveQty,FUnitId.FName,FExtAuxUnitQty,FStockID.FName,FStockLocId,FInStockQty,FInStockBaseQty';
        $FilterString="FBillNo='".$FBillNo."'";
        $Info=$this->ExecuteBillQuery($FieldKeys,$FilterString,'',0,0,20);
        if($Info){
            return $Info;
        }else{
            return false;
        }
    }

    /***
     * 下推采购入库单
     * @param array $Numbers
    @author echa
     * @return array|bool
     */
    public function PushPurchaseRequisition($Numbers=[]){
        if(count($Numbers)<=0){
            return false;
        }
        return $this->PushedDown($Numbers,config('k3cloud.PushPurchaseRequisition'),config('k3cloud.PurchaseRequisition'));
    }


}